import 'package:enjoy_plus/utils/http.dart';
import 'package:enjoy_plus/utils/token.dart';
import 'package:flutter/material.dart';

import '../../utils/eventbus.dart';
import '../../utils/toast.dart';

class MinePage extends StatefulWidget {
  MinePage({super.key, required this.currentIndex});

  int currentIndex;

  @override
  State<MinePage> createState() => _MinePageState();
}

class _MinePageState extends State<MinePage> {
  Map userInfo = {
    'avatar': '',
    'nickname': '',
    'id': '',
  };

  // 菜单数据
  final List menuList = [
    {
      "title": "我的房屋",
      "icon": "assets/images/house_profile_icon@2x.png",
    },
    {
      "title": "我的报修",
      "icon": "assets/images/repair_profile_icon@2x.png",
    },
    {
      "title": "访客记录",
      "icon": "assets/images/visitor_profile_icon@2x.png",
    }
  ];

  @override
  void initState() {
    super.initState();
    eventBus.on<RefreshMine>().listen((event) {
      getProfile();
    });
  }

  @override
  didUpdateWidget(covariant MinePage oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (widget.currentIndex == 1) {
      // TODO: 调用接口获取数据
      getProfile();
    }
  }

  getProfile() async {
    if (TokenManager().getToken() != null) {
      final res = await http.get('/userInfo');
      if (res['code'] != 10000) return ToastUtil.showError('获取数据失败');
      setState(() {
        userInfo = res['data'];
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color.fromARGB(200, 85, 145, 175),
      appBar: AppBar(
        title: const Text('我的', style: TextStyle(color: Colors.white)),
        backgroundColor: Colors.transparent,
        centerTitle: true,
      ),
      body: ListView(
        children: [
          // 个人信息
          Container(
            padding: const EdgeInsets.all(10),
            child: GestureDetector(
              onTap: () {
                //Navigator.pushNamed(context, '/profile');
              },
              child: Row(children: [
                ClipRRect(
                  borderRadius: BorderRadius.circular(50.0),
                  child: userInfo['avatar'] != ''
                      ? Image.network(userInfo['avatar'], width: 50, height: 50)
                      : Image.asset('assets/images/avatar_1.jpg',
                          width: 50, height: 50),
                ),
                const SizedBox(width: 10),
                Text(userInfo['nickName'] ?? '用户名',
                    style: const TextStyle(fontSize: 16, color: Colors.white)),

                const Spacer(), // 占位
                GestureDetector(
                  onTap: () {
                    Navigator.pushNamed(context, '/profile',
                        arguments: userInfo);
                  },
                  child: const Row(children: [
                    Text(
                      '去完善信息',
                      style: TextStyle(color: Colors.white),
                    ),
                    Icon(
                      Icons.arrow_forward_ios,
                      color: Colors.white,
                      size: 13,
                    )
                  ]),
                )
              ]),
            ),
          ),
          Container(
              padding: const EdgeInsets.all(15),
              margin: const EdgeInsets.only(
                  top: 20, left: 10, right: 10, bottom: 20),
              decoration: BoxDecoration(
                  color: Colors.white, borderRadius: BorderRadius.circular(10)),
              child: Column(
                  children: menuList.map((item) {
                return SizedBox(
                    height: 50,
                    child: GestureDetector(
                      onTap: () {
                        if (item['title'] == '我的房屋') {
                          Navigator.pushNamed(context, '/house_list');
                        }
                      },
                      child: Row(children: [
                        Row(
                          children: [
                            Image.asset(
                              item['icon'],
                              width: 20,
                              height: 20,
                            ),
                            const SizedBox(
                              width: 10,
                            ),
                            Text(
                              item['title'],
                              style: const TextStyle(fontSize: 16),
                            )
                          ],
                        ),
                        const Spacer(),
                        const Icon(
                          Icons.arrow_forward_ios,
                          size: 12,
                          color: Colors.grey,
                        )
                      ]),
                    ));
              }).toList())),

          // 测试代码
          FilledButton(
            onPressed: () async {
              TokenManager().saveToken('test token');
              ToastUtil.showInfo('存储成功');
            },
            child: const Text('测试持久化-存token'),
          ),
          FilledButton(
            onPressed: () async {
              String token = TokenManager().getToken() ?? '';
              ToastUtil.showInfo(token);
            },
            child: const Text('测试持久化-取token'),
          ),
          FilledButton(
            onPressed: () async {
              TokenManager().removeToken();
              ToastUtil.showInfo('删除成功');
            },
            child: const Text('测试持久化-删token'),
          ),
          FilledButton(
            onPressed: () async {
              Navigator.pushNamed(context, '/login');
            },
            child: const Text('去登陆'),
          ),
          FilledButton(
            onPressed: () async {
              await http.get('/userInfo');
            },
            child: const Text('获取个人信息'),
          ),
        ],
      ),
    );
  }
}
